set.seed(42) # for reproducibility
# original schedule
schedule <- data.frame(
team = c("CMS", "La Verne", "ETBU", "Occidental", "Cal Lu", "Cal Tech", "Whittier",
"Lewis and Clark", "Pacific Lutheran", "Chapman", "Redlands",
"MIT", "UW La Crosse", "Tufts"),
win_prob = c(0.56, 0.55, 0.53, 0.85, 0.60, 0.95, 0.84,
0.71, 0.73, 0.60, 0.74,
0.80, 0.54, 0.65),
games = c(3, 4, 3, 3, 3, 3, 4,
3, 2, 3, 3,
2, 1, 3)
)
# simulation function
simulate_season <- function(schedule) {
results <- schedule |>
rowwise() |>
mutate(
wins = sum(runif(games) < win_prob),
losses = games - wins
) |>
ungroup()
total_wins <- sum(results$wins)
total_losses <- sum(results$losses)
tibble(total_wins = total_wins, total_losses = total_losses)
}
# Run simulation 1000 times
n_simulations <- 1000
sim_results <- map_dfr(1:n_simulations, ~simulate_season(schedule))
# Summary
summary_stats <- sim_results |>
summarise(
avg_wins = mean(total_wins),
sd_wins = sd(total_wins),
median_wins=median(total_wins),
max_wins = max(total_wins),
min_wins = min(total_wins)
)
print(summary_stats)